package com.hbnu.common.factory;

import com.hbnu.common.dao.CheckInItemDao;
import com.hbnu.common.dao.UserDao;
import com.hbnu.common.dao.impl.CheckInItemDaoImpl;
import com.hbnu.common.dao.impl.UserDaoImpl;

/**
 * 数据访问（DAO）工厂类，用于创建和获取DAO接口的实现类实例。
 * 该工厂类使用单例模式，确保每个DAO接口的实现类实例只创建一次。
 */

public class DaoFactory {
    private static UserDao userDao;
    private static CheckInItemDao checkInItemDao;

    /**
     * 私有构造方法，防止被实例化
     */
    private DaoFactory() {}

    /**
     * 获取UserDao接口的实现类实例
     * @return UserDao接口的实现类实例
     */
    public static synchronized UserDao getUserDao() {
        if (userDao == null) {
            userDao = new UserDaoImpl();
        }
        return userDao;
    }

    /**
     * 获取CheckInItemDao接口的实现类实例
     * @return CheckInItemDao接口的实现类实例
     */
    public static synchronized CheckInItemDao getCheckInItemDao() {
        if (checkInItemDao == null) {
            checkInItemDao = new CheckInItemDaoImpl();
        }
        return checkInItemDao;
    }
}
